# -*- coding: utf-8 -*-
# owner: shenyi
# src/core/logger.py

from loguru import logger
import sys
from pathlib import Path

def setup_logger(
    name: str = "cloudkit",
    log_file: str | None = None,
    level: str = "DEBUG",
    rotation: str = "100 MB",      # 日志文件大小轮转
    retention: str = "1 week",     # 保留时间
    format: str = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
):
    """
    配置 loguru 日志器
    :param name: 仅用于标识（loguru 是全局的，name 不影响实例）
    :param log_file: 日志文件路径，None 表示只输出到控制台
    :param level: 日志级别
    :param rotation: 轮转条件（如 "10 MB", "1 day"）
    :param retention: 保留策略（如 "7 days", "1 month"）
    :param format: 日志格式（支持颜色）
    """
    # 清除默认 handler（避免重复输出）
    logger.remove()

    # 添加控制台输出（带颜色）
    logger.add(
        sys.stderr,
        level=level,
        format=format,
        colorize=True
    )

    # 添加文件输出（可选）
    if log_file:
        log_path = Path(log_file)
        log_path.parent.mkdir(parents=True, exist_ok=True)  # 自动创建目录
        logger.add(
            log_file,
            level=level,
            rotation=rotation,
            retention=retention,
            encoding="utf-8",
            enqueue=True,  # 异步写入，避免阻塞
            backtrace=True,  # 异常时打印完整栈
            diagnose=True    # 异常时打印变量值（生产慎用）
        )

    return logger